package com.tbit.main.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.tbit.main.pojo.AccountUser;
import com.tbit.main.pojo.RecoveryLog;
import com.tbit.main.pojo.VO.RecoveryLogStat;

import java.util.List;

/**
 * @Author: chen
 * @Description:
 * @Date: 创建于 15:22 2023/2/9
 */
public interface RecoveryLogService extends IService<RecoveryLog> {

    /**
     * 新增
     *
     * @param userCode    车辆编号
     * @param accountUser 登录用户信息
     */
    void add(String userCode, AccountUser accountUser);

    /**
     * 指定时间段内回收车辆分组
     *
     * @param accountId 区域id
     * @param startTime 开始时间
     * @param endTime   结束时间
     * @return
     */
    List<RecoveryLogStat> getUserRecoveryLogNum(Integer accountId, Long startTime, Long endTime);

    /**
     * 分页查询回收详细
     *
     * @param accountId 区域id
     * @param startTime 开始时间
     * @param endTime   结束时间
     * @param pageNO    页码数
     * @param rowCount  每页大小
     * @return
     */
    Page<RecoveryLog> queryPage(Integer accountUserId, Integer accountId, Long startTime, Long endTime, Integer pageNO, Integer rowCount, Integer mapType);

    /**
     * 取消回收
     *
     * @param userCode
     */
    void del(String userCode, AccountUser accountUser);

    /**
     * 查询单个设备回收记录
     *
     * @param accountId 区域id
     * @param machineId 设备id
     * @param state     状态
     * @return
     */
    RecoveryLog getByAccountId(Integer accountId, Integer machineId, Integer state);

    /**
     * 批量入库
     *
     * @param userCodes   车辆编号
     * @param accountUser 登录用户信息
     */
    void addBatch(List<String> userCodes, AccountUser accountUser);

    /**
     * 批量入库
     *
     * @param userCodes   车辆编号
     * @param accountUser 登录用户信息
     */
    void delBatch(List<String> userCodes, AccountUser accountUser);

    /**
     * 获取用户批量回收车辆
     *
     * @param userCode    车辆编号
     * @param accountUser 登录用户信息
     * @return
     */
    List<String> getByUserCode(String userCode, AccountUser accountUser,Integer accountId);

    /**
     * 根据车辆id批量修改回收车辆状态
     *
     * @param machineIdList 车辆id集合
     * @param state          状态 0:未入库 1:入库成功 2:出库成功
     * @param remark         备注
     */
    void updateBatchByMachineList(List<Integer> machineIdList, Integer state, String remark);
}
